home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / amiga / uae-0.7.0b2 / src / sd-af / sound.h < prev   
C/C++ Source or Header  |  1998-01-20  |  1KB  |  45 lines

  1.  /* 
  2.   * UAE - The Un*x Amiga Emulator
  3.   * 
  4.   * Support for the AF sound system
  5.   * 
  6.   * Copyright 1996 Marcus Sundberg
  7.   */
  8.  
  9. #include <AF/AFlib.h>
  10.  
  11. extern AFAudioConn  *aud;
  12. extern AC            ac;
  13. extern long          aftime;
  14. extern int           rate;
  15. extern int sndbufsize;
  16. extern uae_u16 sndbuffer[];
  17. extern uae_u16 *sndbufpt;
  18.  
  19. static __inline__ void flush_sound_buffer(void)
  20. {
  21.     long size = (char *)sndbufpt - (char *)sndbuffer;
  22.     if (AFGetTime(ac) > aftime)
  23.     aftime = AFGetTime(ac);
  24.     AFPlaySamples(ac, aftime, size, (unsigned char*) sndbuffer);
  25.     aftime += size / 2;
  26.     sndbufpt = sndbuffer;
  27. }
  28.  
  29. static __inline__ void check_sound_buffers (void)
  30. {
  31.     if ((char *)sndbufpt - (char *)sndbuffer >= sndbufsize) {
  32.     flush_sound_buffer();
  33.     }
  34. }
  35.  
  36. #define PUT_SOUND_BYTE(b) do { *(uae_u8 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 1); } while (0)
  37. #define PUT_SOUND_WORD(b) do { *(uae_u16 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 2); } while (0)
  38. #define SOUND16_BASE_VAL 0
  39. #define SOUND8_BASE_VAL 128
  40.  
  41. #define DEFAULT_SOUND_BSIZ 8192
  42. #define DEFAULT_SOUND_BITS 16
  43. #define DEFAULT_SOUND_FREQ 44100
  44.  
  45.